package idplib

const (
	CODE_HANDS_UP                  = 1  // 举手报告自己的位置,用于接收中台服务保存自己的连接
	CODE_GET_BASE_BOARD            = 2  // 获取主板信息
	CODE_GET_COMPUTER_ABSTRACT     = 3  //获取系统概述信息
	CODE_DISK                      = 4  // 获取硬盘信息
	CODE_LOGIC_DISK                = 5  // 获取逻辑磁盘信息
	CODE_MEMORY                    = 6  // 获取内存信息
	CODE_NETWORK_MAC               = 7  // 获取活跃网卡信息的mac地址
	CODE_NETWORK_IP                = 8  // 获取活跃网卡信息的mac对应的ip
	CODE_NETWORK                   = 9  // 获取所有可用网卡信息
	CODE_OPERATING_SYSTEM          = 10 // 获取操作系统环境信息
	CODE_PRINTER                   = 11 // 获取打印机信息
	CODE_PROCESOR                  = 12 // 获取cpu信息
	CODE_PROCESS                   = 13 // 获取进程信息
	CODE_SERVICE                   = 14 // 获取服务信息
	CODE_STARTUP_COMMAND           = 15 // 获取开机启动项信息
	CODE_SOFTWARE                  = 16 // 采集软件信息
	CODE_SERVER_PACKAGEINFO        = 17 // 采集补丁信息
	CODE_DISPLAY                   = 18 // 获取显示器信息
	CODE_USBID                     = 19 // 获取全部 vid:pid
	CODE_UPDATE_CLIENT             = 20 // 更新客户端
	CODE_GET_GUI_EXE               = 21 // 通知客户端下载用于交互的GUI程序,消息码复用，客户端收到是下载，服务端收到是表示这个消息是被消费成功了，清理redis中的缓存
	CODE_SHOW_GUI_EXE              = 22 // 通知客户端显示指定的GUI程序
	CODE_SHOW_MESSAGE_BOX          = 23 // 显示消息框
	CODE_USB_CHANGE                = 24 // usb 插拔
	CODE_DELETE_FILE               = 25 // 删除文件
	CODE_CLEAR_FILE                = 26 // 清空文件
	CODE_UPDATE_CLIENT_UPDATE_EXE  = 27 // 升级更新程序
	CODE_HEARTBEAT                 = 28 // 心跳
	CODE_COPY_FILE                 = 29 // 复制文件
	CODE_USB_CONTROLLER_DEVICE     = 30 // 获取usb总线控制列表
	CODE_DESKTOP_MONITOR           = 31 //获取显示器和监视器
	CODE_DESKTOP_BY_LOGICAL_DEVICE = 32 // 通过 CIM_LogicalDevice 获取显示器信息
	// =========  新增加的  ==========
	CODE_BIOS_CODE      = 33 // 获取bios序列号
	CODE_LOGIN_NAME     = 34 //登录名
	CODE_CHECK_SOFTWARE = 35 //检查文件、进程是否存在
)

type BoardBaseInfo struct {
	Description          string // eg:基板 , 对象的描述（底板）
	HostingBoard         bool   // eg:TRUE,如果为TRUE，该卡是一个主板，或在一个机箱中的基板。
	HotSwappable         bool   // eg:FALSE,如果为TRUE，就是支持热插拔（判断是否支持热插拔）
	Manufacturer         string // eg:HASEE Computer,表示制造商的名称
	Model                string // eg:null ,物理元素的名称是已知。
	Name                 string // eg:基板 ,对象的名称标签
	OtherIdentifyingInfo string // eg:null ,捕获附加数据，超出资产标签的信息，可以用来标识物理元件
	Product              string // eg:H310CM, 产品的型号
	SerialNumber         string // eg:00000000 ，经过测试大品牌机器这个值都是有唯一值的，我的是杂牌电脑 .制造商分配的用于识别所述物理元件数目。
	Tag                  string // eg:Base Board,系统的基板唯一标识
	Version              string // eg:F1.0G,物理元素的版本
}
type BoardAllInfo struct {
	Caption                 string // 简短说明
	Description             string // 对象的描述（底板）
	HostingBoard            bool   // 如果为TRUE，该卡是一个主板，或在一个机箱中的基板。
	HotSwappable            bool   // 如果为TRUE，就是支持热插拔（判断是否支持热插拔）
	Manufacturer            string // 表示制造商的名称
	Model                   string // 物理元素的名称是已知。
	Name                    string // 对象的名称标签
	OtherIdentifyingInfo    string // 捕获附加数据，超出资产标签的信息，可以用来标识物理元件
	PartNumber              string // 由负责生产或制造的物理元素的组织分配部件编号。
	PoweredOn               bool   // 如果为真，物理元素处于开机状态。
	Product                 string // 产品的型号
	Removable               bool   // 判断是否可拆卸的
	Replaceable             bool   // 判断是否可更换的
	RequirementsDescription string // 自由格式字符串描述方式，这张卡是身体不同于其他卡。该属性才有意义时，相对应的布尔值属性特殊要求是集真的
	RequiresDaughterBoard   bool   // 如果是TRUE，至少一个子板或辅助卡才能正常工作。
	SerialNumber            string // 制造商分配的用于识别所述物理元件数目。
	SKU                     string // 库存的物理单元号。
	SlotLayout              string // 描述插槽位置
	SpecialRequirements     string // 如果为真，此卡是同类型的其他卡物理上唯一的，因此需要一个专门的插槽
	Status                  string // 对象的当前状态。
	Tag                     string // 符系统的基板唯一标识
	Version                 string // 物理元素的版本
}

type SystemAbstract struct {
	DNSHostName               string // eg:hcy ,机器名
	Domain                    string // eg:WORKGROUP, 域
	Manufacturer              string // eg:HASEE Computer ,制造商
	Model                     string // eg:H310CM ,型号
	Name                      string // eg：hcy，名称
	NumberOfLogicalProcessors uint32 // eg:6, 逻辑处理器数量
	NumberOfProcessors        uint32 // eg:1 ,物理处理器数量
	PartOfDomain              bool   // eg:false, 计算机是否入域
	SystemType                string // eg；x64-based PC ，系统类型
	UserName                  string // eg:rock , 当前登陆的用户，注意，如果以服务形式启动，可能获取不到这个值。
}

type DiskBaseInfo struct {
	BytesPerSector   uint32 // eg:512 ,在每个扇区的物理磁盘驱动器的字节数。
	Caption          string // eg:PCIe SSD ,对象的序列号
	Description      string // eg:磁盘驱动器 ,描述
	DeviceID         string // eg: \\.\PHYSICALDRIVE1 ,磁盘驱动器与系统中的其他设备的唯一标识符
	FirmwareRevision string // eg:E8FM11.6 ,修订制造商分配的磁盘驱动器固件。
	InterfaceType    string // eg:SCSI ,物理磁盘驱动器的类型 （IDE、sata）
	Manufacturer     string // eg:(标准磁盘驱动器) ,制造商名称
	MediaType        string // eg:Fixed hard disk media ,由该设备使用或访问的媒体类型。
	Model            string // eg；PCIe SSD ，磁盘驱动器的制造商的型号。
	Name             string // eg:\\.\PHYSICALDRIVE1 ,名字
	SerialNumber     string // eg:6479_A721_8068_6489. 由制造商分配的号来识别物理介质。
	Size             uint64 // eg:256052966400 ,磁盘大小 单位字节 / 1024*1024*1024 才能得到G，
	SystemName       string // eg：HCY ，系统名称
}

// wmi 能获取到 的 全部 disk 信息
type DiskAllInfo struct {
	Availability             uint16 // 设备的状态
	BytesPerSector           uint32 // 在每个扇区的物理磁盘驱动器的字节数。
	Caption                  string // 对象的序列号
	CompressionMethod        string // 设备所使用的算法或工具，以支持压缩。
	ConfigManagerErrorCode   uint32 // Windows配置管理器错误代码。
	ConfigManagerUserConfig  bool   // 如果为True，该设备使用用户定义的配置。
	CreationClassName        string // 代表所在的类
	DefaultBlockSize         uint64 // 此设备默认块大小，以字节为单位。
	Description              string // 描述
	DeviceID                 string // 磁盘驱动器与系统中的其他设备的唯一标识符
	ErrorCleared             bool   // 如果为True，报告LastErrorCode错误现已清除。
	ErrorDescription         string // 关于可能采取的纠正措施记录在LastErrorCode错误，和信息的详细信息。
	ErrorMethodology         string // 误差检测和校正的类型被此设备支持。
	FirmwareRevision         string // 修订制造商分配的磁盘驱动器固件。
	Index                    uint32 // 给定的驱动器的物理驱动器号。此属性由GetDriveMapInfo方法填补。 0xFF的值表示给定的驱动器不映射到物理驱动器。
	InterfaceType            string // 物理磁盘驱动器的类型 （IDE、sata）
	LastErrorCode            uint32 // 报告的逻辑设备上一个错误代码。
	Manufacturer             string // 制造商名称
	MaxBlockSize             uint64 // 最大块的大小，以字节为单位，通过该设备访问的媒体。
	MaxMediaSize             uint64 // 最大介质尺寸的介质，以KB为单位，由该设备支持。
	MediaLoaded              bool   // 如果真，媒体为一磁盘驱动器加载，这意味着该设备具有一个可读的文件系统和可访问。对于固定磁盘驱动器，该属性将始终为TRUE。
	MediaType                string // 由该设备使用或访问的媒体类型。
	MinBlockSize             uint64 // 最小的块大小，以字节为单位，通过该设备访问的媒体
	Model                    string // 磁盘驱动器的制造商的型号。
	Name                     string // 名字
	NeedsCleaning            bool   // 如果真，媒体接入设备需要清洁。不论手动或自动清洗是可能显示在Capabilities属性。
	NumberOfMediaSupported   uint32 // 可被支持的或插入的介质最大数量
	Partitions               uint32 // 此物理磁盘驱动器上的分区是由操作系统识别的数目。
	PNPDeviceID              string // 即插即用逻辑设备的播放设备标识符。
	PowerManagementSupported bool   // 如果为True，该设备可以是电源管理
	SCSIBus                  uint32 // 盘驱动器的SCSI总线号。
	SCSILogicalUnit          uint16 // SCSI逻辑单元的磁盘驱动器的号码（LUN）。
	SCSIPort                 uint16 // 盘驱动器的SCSI端口号。
	SCSITargetId             uint16 // SCSI标识符号码的磁盘驱动器的。
	SectorsPerTrack          uint32 // 在每个轨道此物理磁盘驱动器扇区数。
	SerialNumber             string // 由制造商分配的号来识别物理介质。
	Signature                uint32 // 磁盘识别。该属性可以被用于识别一个共享资源。
	Size                     uint64 // 磁盘大小
	Status                   string // 对象的当前状态。
	StatusInfo               uint16 // 逻辑设备的状态
	SystemCreationClassName  string // 该作用域计算机的CreationClassName属性的值。
	SystemName               string // 系统名称
	TotalCylinders           string // 物理磁盘驱动器上柱面总数。该值可能不准确
	TotalHeads               uint32 // 磁盘驱动器上磁头总数。该值可能不准确。
	TotalSectors             uint64 // 物理磁盘驱动器上的扇区总数。该值可能不准确。
	TotalTracks              uint64 // 物理磁盘驱动器上的曲目总数。该值可能不准确。
	TracksPerCylinder        uint32 // 在物理磁盘驱动器上的每个柱面轨迹的数量。该值可能不准确。
}

// board qwl
const logic_disk_qwl = "SELECT * FROM Win32_LogicalDisk"

// 逻辑磁盘信息
type LogicDiskInfo struct {
	Caption            string //  eg:C: ,标题，也就是盘符
	Description        string // eg:本地固定磁盘 ,描述
	DeviceID           string // eg:C: , 在系统中的唯一标识符
	DriveType          uint32 // eg:3 , 磁盘类型，0-未知；1-No Root Directory；2-移动磁盘；3-本地磁盘；4-网络驱动器；5-光盘；6-RAM盘
	FileSystem         string // eg:NTFS , 磁盘格式
	FreeSpace          uint64 // eg:88191721472,空闲空间
	Size               string // eg:255369482240 ,总空间
	SupportsDiskQuotas bool   // 是否支持磁盘配额
	VolumeName         string // eg: 软件，逻辑卷别名
	VolumeSerialNumber string // eg:2AF1A3B8 ,逻辑卷序列号，并非磁盘序列号。
}

type LogicDiskInfoWarn struct {
	Caption            string //  eg:C: ,标题，也就是盘符
	Description        string // eg:本地固定磁盘 ,描述
	DeviceID           string // eg:C: , 在系统中的唯一标识符
	DriveType          uint32 // eg:3 , 磁盘类型，0-未知；1-No Root Directory；2-移动磁盘；3-本地磁盘；4-网络驱动器；5-光盘；6-RAM盘
	FileSystem         string // eg:NTFS , 磁盘格式
	FreeSpace          uint64 // eg:88191721472,空闲空间
	Size               string // eg:255369482240 ,总空间
	SupportsDiskQuotas bool   // 是否支持磁盘配额
	VolumeName         string // eg: 软件，逻辑卷别名
	VolumeSerialNumber string // eg:2AF1A3B8 ,逻辑卷序列号，并非磁盘序列号。
	Warn               int
}

type MemoryBaseInfo struct {
	Capacity    uint64 // eg:8589934592 ，获取内存容量, / 1024*1024*1024 才能换算成GB
	Description string // eg:物理内存 ，物理内存还虚拟内存
	//ConfiguredClockSpeed uint32 //eg；2133 (0x855) ，配置时钟速度
	//ConfiguredVoltage    uint32 // eg：1200 (0x4B0) ，配置电压
	DataWidth    uint16 // eg：64，获取内存数据带宽
	Manufacturer string // eg：859B，生产商
	//MaxVoltage uint32 // eg：1200 ，最大电压
	//MinVoltage uint32 // eg：1200 ，最小电压
	Model        string // eg：null ，型号 // 不清楚是我电脑的问题还是其他什么原因
	PartNumber   string // eg：CT8G4DFS8266.M8FE   ，零件编号,由生产商定义
	SerialNumber string // eg：2271E66A，编号
	SKU          string // eg：null，SKU号 // 不清楚是我电脑的问题还是其他什么原因
	Speed        uint32 // eg：2667，速率 内存频率 单位MHz
	Tag          string // eg：Physical Memory 0，唯一标识符的物理存储器
}

// wmi 能获取到 的 全部 memory 信息
type MemoryAllInfo struct {
	Capacity uint64 // 获取内存容量（单位字节）
	Caption  string // 物理内存还虚拟内存
	//ConfiguredClockSpeed uint32 //配置时钟速度
	//ConfiguredVoltage    uint32 // 配置电压
	CreationClassName   string // 创建类名（就是更换这个类的名字）
	DataWidth           uint16 // 获取内存带宽
	Description         string // 描述更Caption一样
	DeviceLocator       string // 获取设备定位器
	FormFactor          uint16 // 构成因素
	HotSwappable        bool   // 是否支持热插拔
	InterleaveDataDepth uint16 // 数据交错深度
	InterleavePosition  uint32 // 交错的位置
	Manufacturer        string // 生产商
	//MaxVoltage uint32 // 最大电压
	MemoryType uint16 // 内存类型
	//MinVoltage uint32 // 最小电压
	Model                string // 型号
	Name                 string // 名字
	OtherIdentifyingInfo string // 其他识别信息
	PartNumber           string // 零件编号
	PositionInRow        uint32 // 行位置
	PoweredOn            bool   // 是否接通电源
	Removable            bool   // 是否可拆卸
	Replaceable          bool   // 是否可更换
	SerialNumber         string // 编号
	SKU                  string // SKU号
	SMBIOSMemoryType     uint32 // SMBIOS内存类型
	Speed                uint32 // 速率
	Status               string // 状态
	Tag                  string // 唯一标识符的物理存储器
	TotalWidth           uint16 // 总宽
	TypeDetail           uint16 // 类型详细信息
	Version              string // 版本信息
}

type NetWork struct {
	AdapterType     string // eg:以太网 802.3 ,适配器的类型
	AdapterTypeID   uint16 // eg:0  ,适配器的类型ID
	Caption         string // eg:[00000003] Realtek PCIe GBE Family Controller ,设备的简短描述
	MACAddress      string // eg:94:C6:91:C2:F5:50 ,MAC地址
	Manufacturer    string // eg:Realtek,制造商的名称
	NetConnectionID string // eg:以太网 ,网络连接的名称出现在网络连接控制面板程序
	NetEnabled      bool   // eg: true ,指明适配器是否已启用。如果为True，适配器已启用。您可以启用或通过启用和禁用方法禁用网卡。
	PhysicalAdapter bool   // eg:true , 指明适配器是否是物理或逻辑适配器。如果为True，适配器是物理
	PNPDeviceID     string // eg:PCI\VEN_10EC&DEV_8 ,即插即用逻辑设备的播放设备标识符,部分模拟网卡可做到以假乱真，通过这个标识可以判断区分
	Speed           uint64 // eg:1000000000 ,估计当前带宽比特每秒
	Index           uint32 // 网卡在系统中的下标
	Name            string // 网卡名称
}
type NetworkConfig struct {
	DefaultIPGateway     []string // 网关
	DNSServerSearchOrder []string // 子网掩码
	IPAddress            []string //ip地址
	Index                uint32   // 网卡在系统中的下标
	MACAddress           string   // 网卡
}
type NetworkWire struct {
	DefaultIPGateway     []string // 网关
	DNSServerSearchOrder []string // 子网掩码
	IPAddress            []string //ip地址
	Index                uint32   // 网卡在系统中的下标
	Name                 string   // 名称
	MACAddress           string   // 网卡
	Speed                uint64   // 速率
	Wire                 uint32   // 有线、无线
}

type OperatingSystem struct {
	BuildNumber            string // eg : 19043 .操作系统的构建号,它比产品发布版本号更精确的版本信息。
	Caption                string // eg:Microsoft Windows 10 专业版 , 系统标题
	CountryCode            string // eg:86 ,操作系统使用的国家或者区域代码
	CSName                 string // eg:HCY , 计算机名
	CurrentTimeZone        uint16 // eg:480，基于格林威治时间需要修正的时间差
	Description            string // eg:hechongyang ,系统描述
	Distributed            bool   // eg：false ，该计算机是否为一个分布式系统的节点
	InstallDate            string // eg: 20210207150436.000000+480 ,// 操作系统安装时间
	LastBootUpTime         string // eg:20210811202542.462934+480 ,//操作系统最后一次重启的日期和时间。就是点重启
	LocalDateTime          string // eg:20210929164244.818000+480 ,// 操作系统最后一次的启动时间
	Manufacturer           string // eg:Microsoft Corporation ,系统生产商
	MaxNumberOfProcesses   uint32 // eg: 4294967295 ，系统允许分配的最大进程数
	MaxProcessMemorySize   uint64 // eg:137438953344 ，系统允许分配给进程的最大内存空间，单位kb。在非虚拟机上，这个空间通常 = 总内存空间-（bios+操作系统）
	Name                   string // eg: Microsoft Windows 10 专业版|C:\WINDOWS|\Device\Harddisk1\Partition4 ,系统名称
	NumberOfProcesses      uint32 // eg:249 ,当前在系统上运行的进程数量
	NumberOfUsers          uint32 // eg:2, 操作系统当前为其存储状态信息的用户会话数。
	OSArchitecture         string // eg: 64位 ，操作系统位数
	Primary                bool   // eg:true ,当前操作系统是否位主系统，部分电脑可能存在双操作系统
	ProductType            uint32 // eg:1 ，系统附加信息，1-工作站，2-域控主机，3-服务器
	RegisteredUser         string //eg:rock ,操作系统注册用户名
	SerialNumber           string // eg:00330-80191-48344-AA161, 操作系统产品序列号。
	SystemDrive            string // eg:c； ，系统盘卷标
	TotalSwapSpaceSize     uint64 // eg:null ,交换分区的大小，linux上有这个设计，windows上一般都是null
	TotalVirtualMemorySize uint64 // eg:30077444 ，虚拟内存空间大小，单位kb
	TotalVisibleMemorySize uint64 // eg:16445956 ,物理内存空间大小，单位kb
	Version                string // eg:10.0.19043 ,系统版本号
	WindowsDirectory       string // eg:C:\WINDOWS ,系统安装的文件夹
}
type CpuBaseInfo struct {
	//AssetTag string // eg：To Be Filled By O.E.M.,代表该处理器的资产标签。
	Description       string // eg:Intel64 Family 6 Model 158 Stepping 13 ,描述
	CurrentClockSpeed uint32 // eg:2901 ,-处理器的当前速度，以MHz为单位
	DataWidth         uint16 // eg :64 ,在32位处理器，该值是32，在64位处理器是64
	DeviceID          string // eg:cpu0,在系统上的处理器的唯一标识符
	//ExtClock                  uint32 // eg:100 , 外部时钟频率，以MHz为单位
	Family                    uint16 // eg:205 ,处理器系列类型
	L2CacheSize               uint32 // eg:1536 ,二级缓存大小,kb
	L3CacheSize               uint32 // eg:9216 ,三级缓存的大小,kb
	Manufacturer              string // eg:GenuineIntel,处理器的制造商
	MaxClockSpeed             uint32 // eg：2901，处理器的最大速度，以MHz为单位
	Name                      string // eg :Intel(R) Core(TM) i5-9400 CPU @ 2.90GHz 处理器的名称
	NumberOfCores             uint32 // eg:6,芯为处理器的当前实例的数目。核心是在集成电路上的物理处理器
	NumberOfLogicalProcessors uint32 // eg:6  ,用于处理器的当前实例逻辑处理器的数量
	ProcessorId               string // eg:"BFEBFBFF000906ED",描述处理器功能的处理器的信息,CPUID
	SystemName                string // eg :"HCY",系统的名称
}

type ProcessInfo struct {
	Caption        string // eg:chrome.exe , 标题
	CommandLine    string // eg:"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --type=renderer  ，启动进程的命令行信息
	CreationDate   string // eg:20210819104620.286131+480 ,进程启动时间
	Description    string // eg:chrome.exe , 描述
	ExecutablePath string // eg:C:\Program Files (x86)\Google\Chrome\Application\chrome.exe ,执行文件路径
	Handle         string // eg:15000 ,进程ID
	HandleCount    uint32 // eg:379 ,该进程打开的文件句柄数
	Name           string // eg:chrome.exe ,进程名称
	Priority       uint32 // eg:8 ,进程优先级，范围0(低)~31(高)
	ProcessId      uint32 // eg:15000 ,进程ID
	SessionId      uint32 // eg:1 ,会话ID
	ThreadCount    uint32 // eg：16 ，该进程下的线程数
}
type Service struct {
	AcceptPause bool   // eg: false ,是否可以暂停服务。
	AcceptStop  bool   // eg: false ,是否可以停止服务。
	Caption     string // eg: redis ,标题
	//DelayedAutoStart bool // eg:false, 如果为True，则该服务将在其他自动启动服务启动后启动，并伴有短时间的延迟。
	Description     string // eg: This service runs the Redis server ,服务描述
	DesktopInteract bool   // eg: false 指示服务是否可以创建或与桌面上的窗口通信。大多数服务都不是交互式的;也就是说，它们不以任何方式与用户通信。
	DisplayName     string // eg:redis, 显示名称
	Name            string // eg :redis ,服务器名称
	PathName        string // eg:F:\Redis\redis-server.exe --service-run "F:\Redis\redis.windows-service.conf"  , 服务路径和参数
	ProcessId       uint32 // eg:4304 ,服务的进程标识符。
	Started         bool   // eg: true, 指示服务是否启动。
	StartMode       string //eg: Auto ,服务的启动方式
	// ,Boot -操作系统加载程序启动的设备驱动程序(系统级驱动)；System-操作系统初始化过程启动的设备驱动程序；
	// Auto -系统启动时启动，此时用户还未登陆；Disabled- 除非StartMode更改为“自动”或“手动”，否则无法启动的服务。
	StartName string // eg:NT AUTHORITY\NETWORKSERVICE , 运行服务的帐户名称
	State     string // eg:Running ,基本服务的当前状态。
}
type StartupCommandInfo struct {
	Caption     string // eg:Wechat , 标题，一般是程序名称
	Command     string // eg: F:\WeChat\WeChat.exe ,命令，一般是主程序执行文件所在的路劲
	Description string // eg:Wechat ,程序描述
	Location    string // eg:HKU\S-1-5-21-2779472476-3307822928-228716351-1001\SOFTWARE\Microsoft\Windows\CurrentVersion\Run , 启动命令在磁盘文件系统中的路径。
	Name        string // eg: Wechat ,名称
	User        string // eg: HCY\rock ,此启动命令将为其运行的用户名。
	UserSID     string // eg: S-1-5-21-2779472476-3307822928-228716351-1001 ,用户id
}
type SoftInfo struct {
	IdentifyingNumber string
	Name              string
	Vendor            string
	Version           string
	Caption           string
}
type ServicePack struct {
	Source      string
	Description string
	HotFixID    string
	InstalledBy string
	InstalledOn string
}

type PackList struct {
	CSName      string
	Description string
	HotFixID    string
	InstalledBy string
	InstalledOn string
}
type UsbController struct {
	Antecedent string
	Dependent  string
}
type UsbId struct {
	VIDPID string `json:"VIDPID"`
}
type displayInfo struct {
	Description string
	//MonitorType string
	Name        string
	PNPDeviceID string
}

type displayInfoTransition struct {
	Description string
	MonitorType string
	Name        string
	HardwareID  string
}
type BiosInfo struct {
	SerialNumber          string
	TargetOperatingSystem int16
}
